<?php

class User extends User_Controller {

    function __construct() {
        parent::__construct();
        //$this->load->library('datagrid');
        $this->exceptions_uris = array(
            site_url(BASE_URL_USER . '/login'),
            site_url(BASE_URL_USER . '/autentication'),
            site_url(BASE_URL_USER . '/autentication_ajax'),
            site_url(BASE_URL_USER . '/reset-my-password'),
            site_url(BASE_URL_USER . '/new-reset-password'),
            site_url(BASE_URL_USER . '/DemoEmailMyPassword'),
            site_url(BASE_URL_USER . '/changePassword'),
            site_url(BASE_URL_USER . '/saveChangeMyPassword'),
            site_url(BASE_URL_USER . '/sendKeyActivation')
        );
        $this->load->library('User_Manager');
        $this->load->model(array('Users_M', 'Habilitacoes_M',
            'Lances_M', 'Lances_Pagamentos_M',
            'leiloes/Leilao_Model',
            'Lances_Arrematados_M',
            'Messages_Privates_M',
            'Lances_Propostas_M',
            'Notas_Arrematacao_M'));
        //$this->grid = $this->datagrid;
        $this->data['menu_navbar'] = $this->load->view('frontend/user/navbar', $this->data, true);
    }

    function index() {
        redirect(BASE_URL_USER . '/painel');
    }

    function login() {

        $reference = BASE_URL_USER . '/painel';
        if (isset($_SERVER['HTTP_REFERER']) && in_array($_SERVER['HTTP_REFERER'], $this->exceptions_uris) == false) {
            $reference = $_SERVER['HTTP_REFERER'];
        }

        $this->session->set_userdata('redirect_after_login', $reference);

        $this->template('login');
    }

    function logout() {
        $this->user_manager->logout();
        redirect('/', 'refresh');
    }

    function autentication() {

        $row = $this->user_manager->auth($this->input->post('login'), $this->input->post('pwd'));

        if ($row) {
            if (isset($this->gets['r'])) {
                redirect($this->gets['r']);
            }
            redirect($row->page, 'refresh');
        } else {
            $this->session->set_flashdata('error_login', 'Verifique o login e senha por favor');
            redirect(BASE_URL_USER . '/login' . (isset($this->gets['r']) ? '?r=' . $this->gets['r'] : ''), 'refresh');
        }
    }

    function autentication_ajax() {
        $r['error'] = true;

        /*
          if ($this->user_model->login() == true) {
          $auth = hash('md5', 'S');
          if ($this->session->userdata('authorization') == $auth) {
          $r['error'] = false;
          $r['message'] = 'Autenticação realizada com sucesso';
          } else {
          $this->session->set_userdata('loggedin', FALSE);
          $r['message'] = 'Seu cadastro não foi ativado, verifique seus emails.<br/> Caso não tenha recebido nenhum email para ativação <br/>
          clique <a href="' . site_url(BASE_URL_USER . '/sendKeyActivation') . '" class="link">aqui</a>';
          ///redirect(BASE_URL_USER . '/login');
          }

          //echo 'Logado';
          } else {
          $r['message'] = 'Verifique o login e senha por favor';
          }

          header('content-type:text/json;');
          echo json_encode($r); */
    }

    function painel() {
        $this->data['messages'] = $this->Messages_Privates_M->get_by(array('USER_ID' => userData()->id, 'DELETED' => 'N'));
        $this->data['leiloes'] = $this->Leilao_Model->next_leiloes();
        $this->template('painel');
    }

    function detalhesConta() {
        //$page_view = $this->session->userdata('type') == 'J' ? 'conta_pessoa_juridica' : 'conta_pessoa_fisica';


        $user = $this->Users_M->all_info(userData()->id);

        $this->data['user'] = $user;
        $this->template('detalhesAccount');
    }

    function updateAccount() {

        $name = $this->input->post('NOME');

        $data = array(
            'NOME' => strtoupper($this->input->post('NOME')),
            'NOME_FANTASIA' => strtoupper($this->input->post('NOME_FANTASIA')),
            'EMAIL' => $this->input->post('EMAIL'),
            'EMAIL_ALTERNATIVO' => $this->input->post('EMAIL_ALTERNATIVO'),
            'LOGRADOURO' => $this->input->post('LOGRADOURO'),
            'NUMERO' => $this->input->post('NUMERO'),
            'BAIRRO' => $this->input->post('BAIRRO'),
            'CIDADE' => $this->input->post('CIDADE'),
            'UF' => $this->input->post('UF'),
            'CEP' => clear_number($this->input->post('CEP')),
            'CONTATO' => $this->input->post('CONTATO'),
            'CPF_CONTATO' => clear_number($this->input->post('CPF_CONTATO')),
            'NACIONALIDADE' => $this->input->post('NACIONALIDADE'),
            'COMPLEMENTO' => $this->input->post('COMPLEMENTO'),
            'RG_IE' => clear_number($this->input->post('RG_IE')),
            'TELEFONE' => clear_number($this->input->post('TELEFONE')),
            'TELEFONE_2' => clear_number($this->input->post('TELEFONE_2')),
            'CELULAR' => clear_number($this->input->post('CELULAR')),
            'NOME_MAE' => $this->input->post('NOME_MAE'),
            'ESTADO_CIVIL' => $this->input->post('ESTADO_CIVIL'),
            'NASCIMENTO' => auto_format_data($this->input->post('NASCIMENTO'), '/')
        );
        $data['PWD'] = $this->input->post('PWD');

        $this->user_manager->update($data, $this->input->post('USER_ID'));
        Utils::FlashMessage(Utils::message('save_success'));
        redirect(BASE_URL_USER . '/detalhesConta');
    }

    function historico() {


        $this->data['habilitacoes'] = $this->Habilitacoes_M->get_user_info(userData()->id);
        $this->data['lances'] = $this->Lances_M->get_user_info(userData()->id);
        $this->data['lances_arrematados'] = $this->Lances_Arrematados_M->get_user_info(userData()->id);
        $this->template('historico');
    }

    function resetMyPassword() {
        $this->data['menu_navbar'] = '';
        $this->template('reset-password');
    }

    function pagamentos($lid, $leid) {

        $this->data['lotes'] = $this->Lances_Arrematados_M->get_by_user_lote_leilao(userData()->id, $lid, $leid);
        $is_payment = $this->Lances_Pagamentos_M->get_by(array('LOTE_ID' => $lid, 'LEILAO_ID' => $leid, 'USER_ID' => userData()->id), true);
        if (!$is_payment) {
            $key = Utils::generateKeyActivation(8);
            $data = date('Y-m-d H:i:s');
            $id = $this->Lances_Pagamentos_M->save(
                    array('LOTE_ID' => $lid,
                        'LEILAO_ID' => $leid,
                        'USER_ID' => userData()->id,
                        'CRIADO' => $data,
                        'ALTERADO' => date('Y-m-d H:i:s'),
                        'KEY' => $key
                    )
            );
            $this->data['cod_payment'] = $id;
            $this->data['hash_payment'] = $key;
            $this->data['date_payment'] = $data;
        } else {

            $this->data['cod_payment'] = $is_payment->PAGAMENTO_ID;
            $this->data['hash_payment'] = $is_payment->KEY;
            $this->data['date_payment'] = $is_payment->CRIADO;
        }

        $this->template('pagamentos');
    }

    function newMyPasswordReset() {
        $row = $this->Users_M->get_by(array('CPF_CNPJ' => $this->input->post('cpf_cnpj'), 'EMAIL' => $this->input->post('email')), TRUE);

        if ($row) {

            $this->load->library('email');
            $this->config->load('email', TRUE);
            $config_email = $this->config->item('cadastro', 'email');
            $this->email->initialize($config_email);
            $this->_mail = (object) $config_email;
            $this->email->from($this->_mail->from, $this->_mail->from_label);
            $this->email->to($row->EMAIL);
            $email_key = hash('sha512', $row->LOGIN . $row->COD);
            ob_start();
            $this->DemoEmailMyPassword($row->NOME, anchor(site_url('changePassword/' . $email_key), 'aqui', 'style="font-size:11px; color:#f9b815; font-weight:bold;"'), site_url('changePassword/' . $email_key));
            $body = ob_get_clean();
            $body = utf8_decode($body);
            $this->email->subject(utf8_decode('Leiloar Recuperação de Senha'));
            $this->db->insert('reset_password', array('USER_ID' => $row->COD, 'KEY' => $email_key));
            $this->email->message($body);
            if ($this->email->send()) {
                $this->session->set_flashdata('success_message', 'Um email foi enviado para ' . $row->EMAIL);
                redirect(BASE_URL_USER . '/login');
            }
        } else {
            $this->session->set_flashdata('error_login', 'Não encontramos nenhum registro com os dados digitados');
            redirect(BASE_URL_USER . '/reset-my-password');
        }
    }

    function refreshActivation() {
        ?>
        <html lang="en"> 
            <body style="background: #333334; color: #fff; font-family: arial,sans-serif;">
                <table style="background: #333334; color: #fff; font-family: arial,sans-serif;" width="600px;" style="text-align: justify; font-size: 11px;" align="center">
                    <tr>
                        <td>
                            <img src="http://leiloar.net/public/images/logo.png"/>
                            <hr style="background:none; border:none;border-bottom:1px solid #f9b815;"/>
                        </td>
                    </tr>

                    <tr style="line-height: 15px;">
                        <td>
                            <p style="font-size:12px;">
                                Olá {{user_name}} <br/><br/> Este é um email para ativar o seu cadastro.<br/>
                                Se você não solicitou essa requisição de ativação, então pedimos que ignore esse email <br/>
                                <span style="color:#f9b815; text-align: left;"> Para ativar seu cadastro clique {{key_active_user}} </span>




                            </p>
                        </td>
                    </tr>
                </table>



            </body>
        </html>
        <?php
    }

    function sendKeyActivation() {




        if ($key = $this->session->userdata('userkey')) {


            $this->load->library('email');
            $this->config->load('email', TRUE);
            $config_email = $this->config->item('cadastro', 'email');
            $this->email->initialize($config_email);
            $this->_mail = (object) $config_email;

            //print_r($this->_mail);

            $this->email->from($this->_mail->from, $this->_mail->from_label);

            $name = $this->session->userdata('full_name');
            $this->email->to(base64_decode($this->session->userdata('usm')));
            ob_start();
            $this->refreshActivation();
            $body = ob_get_clean();
            $body = utf8_decode($body);
            $this->email->subject('Ativação de Cadastro');

            $body = str_replace(array('{{user_name}}', '{{key_active_user}}'), array($name, '<a href="' . site_url('activeNewUser/' . $key . '">aqui</a>')), $body);
            $this->email->message($body);
            $this->email->send();
            $this->session->set_flashdata('success_message', '<br/> Verifique sua caixa de emails.');
        }

        redirect(BASE_URL_USER . '/login');
    }

    function changePassword() {
        $this->data['menu_navbar'] = '';
        $key = $this->session->userdata('key_change_password');
        if ($key) {
            $row = $this->db->get_where('reset_password', array('key' => $key))->row();
            if ($row) {
                $this->data['user'] = $row;
                $this->template('change-password');
            } else {
                redirect(BASE_URL_USER);
            }
        } else {
            redirect(BASE_URL_USER);
        }
    }

    function saveChangeMyPassword() {

        $save = $this->Users_M->save(
                array('SENHA' => $this->Users_M->hash($this->input->post('password')))
                , $this->input->post('USER_ID'));
        if ($save) {
            $this->db->delete('reset_password', array('USER_ID' => $this->input->post('USER_ID')));
            $this->session->unset_userdata('key_change_password');
            $this->session->set_flashdata('success_message', 'Senha alterada com sucesso');
            redirect(BASE_URL_USER . '/login');
        }
    }

    function generateNFE($userId, $leilaoId) {
        $this->load->model(array('administration/admin_prestacao_model'));
        $nfe = $this->db->get_where('nfes', array('USER_ID' => $userId, 'LEILAO_ID' => $leilaoId))->row();

        $config['nfe']['number'] = format_number_nfe($nfe->NOTA_ID);
        $config['nfe']['data'] = auto_format_data($nfe->DATA, '-', '/');
        $config['nfe']['desconto'] = $nfe->DESCONTO;
        $config['nfe']['observacao'] = $nfe->OBSERVACAO;
        $this->load->library('nfe_lib', $config);


        $pdf = $this->nfe_lib;
        $pdf->add_image(BASESITE . 'public/images/logo-pdf.png');
        $data = array();
        $rds = $this->admin_prestacao_model->get_data_lca_by_user_and_leilao($userId, $leilaoId);

        if ($rds) {
            $info = $rds['0'];
            $pdf->add_data_buyer($info->NOME, format_cnpj_cpf($info->CPF_CNPJ), $info->RG_IE, $info->LOGRADOURO . ', ' . $info->NUMERO . ' ' . $info->COMPLEMENTO . ' ' . $info->BAIRRO, format_cep($info->CEP), $info->CIDADE, $info->UF, format_telefone($info->TELEFONE));

            $pdf->add_data_seller($info->RAZAO, '');
            $comissao = 0;
            foreach ($rds as $key => $row) {

                $comissao += ($row->TOTAL * $row->comissao) / 100;
                $data[] = array('qtd' => $row->LOTE_ID, 'description' => $row->titulo, 'value' => $row->TOTAL, 'taxa' => get_taxa($row->TOTAL));
            }
            $pdf->add_comissao($comissao);
        }
        $pdf->generateNFE($data);
    }

    function loadMp($id) {

        $mp = $this->Messages_Privates_M->get($id, true);

        if ($mp) {
            $this->Messages_Privates_M->save(array('LOADED' => 'S'), $id);
            echo '<div class="mailbox-box">';
            echo '<div class="mailbox-header">';
            echo "<div class=\"mailinbox-by\"><strong>" . lang_system('mailinbox_by') . " : </strong> {$mp->SENDING} </div>";
            echo "<div class=\"mailinbox-subject\"><strong>" . lang_system('mailinbox_subject') . " : </strong> {$mp->TITLE}</div>";
            echo '</div>';
            echo '<div class="mailbox-message">';
            echo $mp->MESSAGE;
            echo '</div>';
            echo '</div>';
        }
    }

    function confirmContraProposta($id) {
        if ($this->Lances_Propostas_M->save(array('APROUVE' => 1), $id)) {
            $rowP = $this->Lances_Propostas_M->get($id, true);

            $lca = $this->Lances_Arrematados_M->get_by(array('LOTE_ID' => $rowP->LOTE_ID, 'USER_ID' => $rowP->USER_ID), true);
            $user = new stdClass();
            $user->tipo = 'P'; //proposta
            $user->valor = $rowP->VALOR;
            $user->login = userData()->login;
            $user->id = userData()->id;
            $this->Lances_Arrematados_M->delete($lca->ID);

            $hasAdd = $this->Lances_M->add($rowP->LOTE_ID, $user);
            $hasOnSave = false;
            if ($hasAdd) {
                $row = $this->Lances_M->info_lote($rowP->LOTE_ID, $rowP->LEILAO_ID, false);
                $data_insert = array(
                    'LOTE_ID' => $row->LOTE_ID,
                    'LEILAO_ID' => $row->LEILAO_ID,
                    'USER_ID' => $row->USER_ID,
                    'TOTAL' => $row->TOTAL,
                    'LANCE_ID' => $row->ID,
                    'DATAHORA' => date('Y-m-d H:i:s'),
                    'CONDICIONAL' => $lca->CONDICIONAL,
                    'VENDIDO' => 'S'
                );
                $hasOnSave = $this->Lances_Arrematados_M->save($data_insert);
            }
        }
        redirect(BASE_URL_USER . '/historico');
    }

    function cancelContraProposta($id) {
        //$this->Lances_Propostas_M->save(array('APROUVE'=>2),$id);
        $row = $this->Lances_Propostas_M->get($id);
        $lca = $this->Lances_Arrematados_M->get_by(array('LOTE_ID' => $row->LOTE_ID, 'USER_ID' => $row->USER_ID), true);
        $this->Lances_Arrematados_M->delete($lca->ID);
        redirect(BASE_URL_USER . '/painel');
    }

    function loadProposta($id) {
        $row = $this->Lances_Propostas_M->get($id, true);
        echo "<div class=\"proposta-box\">"
        . " <h4>Aprovar Proposta</h4><hr/>"
        . "<div class='alert alert-danger'>Caso essa proposta não tenha resposta me 24 horas será reprovada automaticamente.</div>"
        . " <div><h3> " . number_format($row->VALOR, 2, ',', '.') . "(BRL)</h3></div><hr/>"
        . ' <a href="' . site_url('aprouve-proposta-' . $id . '.html') . '" class="btn btn-primary">Aprovar</a>&nbsp;'
        . ' <a href="' . site_url('reprouve-proposta-' . $id . '.html') . '" class="btn btn-danger">Reprovar</a>'
        . "<div>";
    }

    function nfe($id) {
        $this->load->library('reports/Library_Mpdf', array('margin_left' => 10, 'margin_right' => 8, 'font_size' => 9));
        $pdf = $this->library_mpdf;
        $data = $this->_getDataNFE($id);
        $data['lance']->INFO_VIA = '1ª Via-ARREMATANTE';
        $data['content'] = $this->load->view('static/pdf/nfe', $data, true);
        $html1 = $this->parser->parse('static/pdf/tpl', $data, TRUE);
        $pdf->add_html($html1);
        $pdf->add_page();
        $data['lance']->INFO_VIA = '2ª Via-RETIRADA';
        $data['content'] = $this->load->view('static/pdf/nfe', $data, true);
        $html2 = $this->parser->parse('static/pdf/tpl', $data, true);
        $pdf->add_html($html2);
        $pdf->display();
    }

    /**
     * getDataNFE
     * 
     * @access private
     * @param int $id
     * @return array
     */
    function _getDataNFE($id) {
        $has_nota = $this->Notas_Arrematacao_M->get_by(array('PAGAMENTO_ID' => $id), true);
        $data = array();
        if ($has_nota) {
            $data['lance'] = (object) unserialize($has_nota->DATA_NOTA);
            $data['lance']->COD = $has_nota->COD;
        }
        //create new note is not exist
        if (!$has_nota) {
            $_data = $this->Lances_Pagamentos_M->all($id);
            $cod = $this->Notas_Arrematacao_M->save(array(
                'CREATE' => date('Y-m-d H:i:s'),
                'PAGAMENTO_ID' => $id,
                'DATA_NOTA' => serialize($_data)
            ));
            $data['lance'] = $_data;
            $data['lance']->COD = $cod;
        }

        return $data;
    }

}
